Point (qdrant)
RDBでのレコードのようなものmrsekut.icon
以下で構成される
id
ベクターの一意の識別子。
vector
画像、音声、ドキュメント、ビデオなどのデータの高次元表現。
ベクターに追加できる追加データを含む JSON オブジェクト
Collectionに突っ込む?
GPT-4.icon
🔷 Points(ポイント)とは?
Qdrant の基本単位です。ベクトル(vector)+ ペイロード(payload) から成るレコードです。
例:
code:json
{
"id": 129,
"payload": {"color": "red"}
}
id: ユニークなID(数値 or UUID 形式)
vector: 検索のためのベクトル(必須)
payload: 補足情報(任意。例:色、タグ、カテゴリなど)
---
🔎 ポイント検索の基本
ポイントは「コレクション」内で類似度検索(ベクトル検索)されます。
また、payload(例: color: red)によるフィルタリングも可能です。
---
🆔 ID の形式
Qdrant では以下の形式をサポート:
数値(例: 1, 2, 100)
UUID(例: "550e8400-e29b-41d4-a716-446655440000")
どちらでもOK。混在も可能。
---
🧠 ベクトルの種類
各ポイントに複数のベクトルを持たせるには「Named Vectors」を使います。
---
🚀 アップロード方法
バッチ(列指向)形式:
code:json
{
"batch": {
"payloads": {}, {},
"vectors": ...], ..., [... }
}
レコード(行指向)形式:
code:json
{
"points": [
{
"id": 1,
"payload": {...}
},
...
]
}
両方とも同じ意味ですが、好みに応じて選択可能です。
---
🧩 Named Vectors の扱い
複数ベクトルを持つ場合、名前付きで定義します:
code:json
"vector": {
}
任意のベクトルだけをアップロード・更新可能です。
---
🔍 疎ベクトルの定義(Sparse Vectors)
値の多くがゼロのベクトルは、(index, value)で表現できます:
code:json
"vector": {
"text": {
}
}
index はゼロ以外の値の位置です。
※順不同でもよいが、Qdrant 側でソートされるので順序に依存しないように注意。
---
✏️ ポイントの編集
ベクトルの更新(上書きではない):
code:json
PUT /collections/{collection}/points/vectors
{
"points": [
{
"id": 1,
"vector": { "image": ... } }
]
}
ベクトルの削除:
code:json
POST /collections/{collection}/points/vectors/delete
{
}
ポイント自体の削除(ID指定 or フィルター指定):
code:json
POST /collections/{collection}/points/delete
{
}
または:
code:json
{
"filter": {
"must": "key": "color", "match": { "value": "red" } }
}
}
---
📥 ポイント取得(読み出し)
ID指定で取得できます:
code:json
POST /collections/{collection}/points
{
}
オプションで with_vectors や with_payload を使って一部だけ取得も可能。
---
🔁 スクロール(ページネーション)
code:json
POST /collections/{collection}/points/scroll
{
"filter": {
"must": "key": "color", "match": { "value": "red" } }
},
"limit": 1,
"with_payload": true
}
next_page_offset に次の取得に使うIDが返ってくる
null の場合は終了
---
例えば、payload に timestamp がある場合、以下のようにソート可能:
code:json
"order_by": {
"key": "timestamp",
"direction": "desc"
}
※これにはpayloadインデックスが必要。ページングは start_from + must_not を組み合わせて手動で行う。
---
🔢 カウント取得
フィルター条件に合致する件数を取得:
code:json
POST /collections/{collection}/points/count
{
"filter": {
"must": "key": "color", "match": { "value": "red" } }
},
"exact": true
}
---
📦 バッチ更新(v1.5.0~)
以下のように、複数の操作を一度にまとめて送信可能:
code:json
POST /collections/{collection}/points/batch
{
"operations": [
{ "upsert": {...} },
{ "update_vectors": {...} },
{ "delete_vectors": {...} },
...
]
}
---
⏳ 非同期 vs 同期処理
デフォルト(wait=false): 非同期処理、すぐレスポンスが返る
?wait=true:完了するまで待機。完了後にレスポンス